package com.xzy.sms.utils;

import java.util.Map;
import java.util.TreeMap;

import org.apache.commons.lang3.StringUtils;

/**
 * @desc 
 * @author wjw
 * @time 2017年11月16日下午2:37:54
 */
public class SmsUtils {
    
    /**
     * 对于要提交的参数进行签名
     *
     * @param map x
     * @param secretKey xx
     * @return x
     */
    public static String buildRawSign(Map<String, String> map) {
        StringBuilder sb = new StringBuilder(256);
        TreeMap<String, String> treeMap = new TreeMap<String, String>(map);
        for (String key : treeMap.keySet()) {
            if (!"sign".equals(key) && !isEmpty(treeMap.get(key))) {
                sb.append(String.format("&%s=%s", key, treeMap.get(key)));
            }
        }
        
        if (sb.length() > 0) {
            sb.delete(0, 1);
        }
        
        return sb.toString();
    }
    
    /**
     * 对于要提交的参数进行签名
     *
     * @param map x
     * @param secretKey xx
     * @return x
     */
    public static String sign(Map<String, String> map, String secretKey) {
        String data = sign(buildRawSign(map), secretKey);
        return data;
    }
    
    /**
     * 对于要提交的参数进行签名
     *
     * @param rawSign x
     * @param secretKey xx
     * @return x
     */
    public static String sign(String rawSign, String secretKey) {
        String raw = String.format("%ssecretKey=%s", (StringUtils.isEmpty(rawSign) ? "" : rawSign + "&"), secretKey);
        
        return MD5.GetMD5Code(raw);
    }
    
    /**
     * 字符串是否为空
     *
     * @param str x
     * @return x
     */
    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }
    
}
